Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply.
The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.
Retrieval strategy. "keyword" is lexical, "vector" is embedding similarity, "hybrid" (default) combines both, and "agentic" lets the engine run a multi-round LLM-guided retrieval — more thorough, slower.
Post-fusion score floor, 0.0–1.0. Applies to the episode hybrid (hierarchy) path only; other paths ignore it. The hybrid path fuses its two routes into a probability, so unlike a raw keyword or vector score this floor is an absolute bar and 0.0–1.0 is the real range.
Deprecated and has no effect: the human-readable rendering it requested is no longer produced. Still accepted so existing clients that send it keep working; new code should leave it out.
Opt-in LLM rerank, and only for hybrid agent_case / agent_skill retrieval. The episode hybrid path has its own fact eviction and ignores this, as do keyword, vector and agentic.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"EverOS","colors":{"primary":"#2DABC2","light":"#FAF9F5","dark":"#FFC53D"},"logo":{"light":"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/dark.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=3c77717d85a2e6597b61a703fa9f18dc","dark":"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/light.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=8edcb7078f3569fbce98154987e4c825","href":"//evermind.ai"},"favicon":"https://mintcdn.com/evermind/KH16NOZG47OFzMRe/favicon.svg?fit=max\u0026auto=format\u0026n=KH16NOZG47OFzMRe\u0026q=85\u0026s=5d3fe0e14c145627d3adc793919fc891","navbar":{"links":[{"href":"mailto:contact@evermind.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://everos.evermind.ai"}},"footer":{"socials":{"x":"https://x.com/EverMindAI","github":"https://github.com/EverMind-AI/EverOS","linkedin":"https://www.linkedin.com/company/ai-evermind"}},"integrations":{"gtm":{"tagId":"GTM-WQG5VGJQ"},"posthog":{"apiKey":"phc_xzrNRpDb4XkGwtE0wb24VNJT89c47fsuEA4FibnmdnE","apiHost":"https://phc.evermind.ai"}},"banner":{"content":"EverOS API v1 retires on November 2, 2026. [See what you need to do](/api-reference/v1-sunset)","dismissible":false},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"evermind","hasAudioNarration":false,"actualSubdomain":"evermind","customDomains":["docs.evermind.ai"],"gitSource":{"type":"github","owner":"evermind-ai","repo":"everos-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adec8aacdbe2c2cc473aa1f","collectionId":"22f13430-6cac-44bc-889d-b59c91ab5b8d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adec8aacdbe2c2cc473aa1f"},"feedback":{"agentFeedback":true,"thumbs":true},"entitlements":{},"buildId":"6adec8aacdbe2c2cc473aa1f","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":39},{"language":"default","tag":"API Reference (Cloud v1 · legacy)","count":21},{"language":"default","tag":"Knowledge Bases","count":19},{"language":"default","tag":"API Reference (OSS v1 · legacy)","count":17},{"language":"default","tag":"Memory","count":17},{"language":"default","tag":"EverOS Cloud","count":14},{"language":"default","tag":"Core Concepts","count":10},{"language":"default","tag":"Open Source","count":10},{"language":"default","tag":"Knowledge Wiki","count":9},{"language":"default","tag":"Memories","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html:not(.dark),html:not(.dark) #body-content,html:not(.dark) #content-area,html:not(.dark) #navbar,html:not(.dark) #sidebar,html:not(.dark) #sidebar-content,html:not(.dark) #table-of-contents,html:not(.dark) aside,html:not(.dark) body,html:not(.dark) header,html:not(.dark) main,html:not(.dark) nav{background-color:#faf9f5}:not(.dark) .from-background-light{--tw-gradient-from:#FAF9F5!important}.dark .from-background-light{--tw-gradient-from:#0e0e10!important}div.mt-2.text-lg.prose{margin-top:1.5rem}"}],"page":{"pagePath":"api-reference/memory/search-memories-[oss-+-cloud]","slug":"/api-reference/memory/search-memories-[oss-+-cloud]","pageMetadata":{"title":"Search memories [OSS + Cloud]","description":"Retrieve the memories relevant to a query.\n\nExactly one of `user_id` / `agent_id` is required, and it decides what comes back: a user owner returns episodes (plus profiles with `include_profile`), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply.\n\nThe vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/search","href":"/api-reference/memory/search-memories-[oss-+-cloud]","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Retrieve the memories relevant to a query.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Exactly one of \", _jsx(_components.code, {\n children: \"user_id\"\n }), \" / \", _jsx(_components.code, {\n children: \"agent_id\"\n }), \" is required, and it decides what comes back: a user owner returns episodes (plus profiles with \", _jsx(_components.code, {\n children: \"include_profile\"\n }), \"), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Search memories [OSS + Cloud]","description":"Retrieve the memories relevant to a query.\n\nExactly one of `user_id` / `agent_id` is required, and it decides what comes back: a user owner returns episodes (plus profiles with `include_profile`), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply.\n\nThe vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/search","href":"/api-reference/memory/search-memories-[oss-+-cloud]","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Memory"],"summary":"Search memories [OSS + Cloud]","operationId":"searchMemory","requestBody":"55b77865-70d0-43cb-8666-8754b91a6fcf","responses":{"200":"89f0a5fd-fbac-4bb5-a8a0-db60bbc549fb","401":"ea898aa4-3129-4950-bd3e-719bcabf0fa4","403":"d3fd4424-215b-4b73-bb17-b3bdb58d442b","422":"a6c396bb-9b4c-4553-848d-500d2b67cd47","429":"fd959beb-f279-48d9-a11f-65d96e5ed7b0","503":"86d73fa2-0c74-47c4-b7f1-95408ee4e011"},"description":"Retrieve the memories relevant to a query.\n\nExactly one of `user_id` / `agent_id` is required, and it decides what comes back: a user owner returns episodes (plus profiles with `include_profile`), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply.\n\nThe vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.","method":"post","type":"path","servers":["6755bf3f-8ce6-4610-8f69-e9440a578770"],"security":["903c48f7-e2df-45e0-bf1e-f020d6c26b61"],"path":"/api/v2/memory/search","baseUrlOptions":["https://api.evermind.ai"],"title":"Search memories [OSS + Cloud]","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"The natural-language query to retrieve against.","isRequired":true,"uniqueKey":"query","typeLabel":"string"},"app_id":{"type":"string","maxLength":128,"title":"App Id","default":"default","description":"Scope to search in, defaulting to \"default\". Must match the pair used on write.","uniqueKey":"app_id","typeLabel":"string"},"project_id":{"type":"string","maxLength":128,"title":"Project Id","default":"default","description":"Second half of the scope, defaulting to \"default\".","uniqueKey":"project_id","typeLabel":"string"},"user_id":{"oneOf":[{"type":"string","title":"User Id","description":"Search one user's memories — matched against the messages' `sender_id`. Exactly one of `user_id` / `agent_id` is required.","maxLength":256,"minLength":1,"uniqueKey":"user_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"User Id","description":"Search one user's memories — matched against the messages' `sender_id`. Exactly one of `user_id` / `agent_id` is required.","uniqueKey":"user_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"user_id","typeLabel":"string | null"},"agent_id":{"oneOf":[{"type":"string","title":"Agent Id","description":"Search one agent's memories (cases and skills). Exactly one of `user_id` / `agent_id` is required.","maxLength":256,"minLength":1,"uniqueKey":"agent_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Agent Id","description":"Search one agent's memories (cases and skills). Exactly one of `user_id` / `agent_id` is required.","uniqueKey":"agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_id","typeLabel":"string | null"},"method":{"type":"string","enum":["keyword","vector","hybrid","agentic"],"title":"Method","default":"hybrid","description":"Retrieval strategy. \"keyword\" is lexical, \"vector\" is embedding similarity, \"hybrid\" (default) combines both, and \"agentic\" lets the engine run a multi-round LLM-guided retrieval — more thorough, slower.","uniqueKey":"method","typeLabel":"enum\u003cstring>"},"top_k":{"type":"integer","title":"Top K","default":-1,"description":"Maximum number of hits. Either -1 (the default, letting the engine decide) or a value from 1 to 100; anything else is rejected with 422.","uniqueKey":"top_k","typeLabel":"integer"},"radius":{"oneOf":[{"type":"number","title":"Radius","description":"Vector-similarity radius, 0.0–1.0. Unset leaves it to the engine.","maximum":1,"minimum":0,"uniqueKey":"radius.oneOf.0","typeLabel":"number"},{"type":"null","title":"Radius","description":"Vector-similarity radius, 0.0–1.0. Unset leaves it to the engine.","uniqueKey":"radius.oneOf.1","typeLabel":"null"}],"uniqueKey":"radius","typeLabel":"number | null"},"min_score":{"oneOf":[{"type":"number","title":"Min Score","description":"Post-fusion score floor, 0.0–1.0. Applies to the episode hybrid (hierarchy) path only; other paths ignore it. The hybrid path fuses its two routes into a probability, so unlike a raw keyword or vector score this floor is an absolute bar and 0.0–1.0 is the real range.","maximum":1,"minimum":0,"uniqueKey":"min_score.oneOf.0","typeLabel":"number"},{"type":"null","title":"Min Score","description":"Post-fusion score floor, 0.0–1.0. Applies to the episode hybrid (hierarchy) path only; other paths ignore it. The hybrid path fuses its two routes into a probability, so unlike a raw keyword or vector score this floor is an absolute bar and 0.0–1.0 is the real range.","uniqueKey":"min_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"min_score","typeLabel":"number | null"},"include_profile":{"type":"boolean","title":"Include Profile","default":false,"description":"Also return the user's profile alongside the hits, saving a second call. Ignored for an agent owner, whose results carry no profiles.","uniqueKey":"include_profile","typeLabel":"boolean"},"with_readable_episode":{"type":"boolean","title":"With Readable Episode","default":false,"description":"Deprecated and has no effect: the human-readable rendering it requested is no longer produced. Still accepted so existing clients that send it keep working; new code should leave it out.","deprecated":true,"uniqueKey":"with_readable_episode","typeLabel":"boolean"},"enable_llm_rerank":{"type":"boolean","title":"Enable Llm Rerank","default":false,"description":"Opt-in LLM rerank, and only for hybrid agent_case / agent_skill retrieval. The episode hybrid path has its own fact eviction and ignores this, as do keyword, vector and agentic.","uniqueKey":"enable_llm_rerank","typeLabel":"boolean"},"filters":{"oneOf":[{"type":"object","title":"FilterNode","description":"Optional filter tree — recursive `AND` / `OR` arrays mixed with the scalar conditions being matched.","properties":{"AND":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"And","description":"Nested conditions that must all hold.","uniqueKey":"filters.oneOf.0.AND.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"And","description":"Nested conditions that must all hold.","uniqueKey":"filters.oneOf.0.AND.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.AND","typeLabel":"any[] | null"},"OR":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Or","description":"Nested conditions of which at least one must hold.","uniqueKey":"filters.oneOf.0.OR.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Or","description":"Nested conditions of which at least one must hold.","uniqueKey":"filters.oneOf.0.OR.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.OR","typeLabel":"any[] | null"}},"additionalProperties":true,"uniqueKey":"filters.oneOf.0","typeLabel":"FilterNode · object"},{"type":"null","description":"Optional filter tree — recursive `AND` / `OR` arrays mixed with the scalar conditions being matched.","uniqueKey":"filters.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters","typeLabel":"FilterNode · object | null"}},"additionalProperties":false,"type":"object","required":["query"],"title":"SearchInput","example":{"user_id":"user-1","query":"outdoor hobbies","method":"hybrid","top_k":10,"include_profile":true},"uniqueKey":"","typeLabel":"SearchInput · object"},"examples":{"Example":{"title":"Example","value":{"user_id":"user-1","query":"outdoor hobbies","method":"hybrid","top_k":10,"include_profile":true}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"89f0a5fd-fbac-4bb5-a8a0-db60bbc549fb":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"request_id":{"type":"string","title":"Request Id","description":"Request trace id (peer to data)","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"data":{"properties":{"episodes":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Episode id. Use it to bind tags or to fetch this episode again.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].id","typeLabel":"string"},"app_id":{"type":"string","title":"App Id","description":"The business-semantic scope this memory was written under.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].app_id","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Second half of that scope.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].project_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the remembered exchange happened (ISO 8601), not when it was extracted.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].timestamp","typeLabel":"string\u003cdate-time>"},"summary":{"type":"string","title":"Summary","description":"Short summary of the episode — what a result list should show.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].summary","typeLabel":"string"},"subject":{"type":"string","title":"Subject","description":"What the episode is about, in a few words.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].subject","typeLabel":"string"},"episode":{"type":"string","title":"Episode","description":"The episode's stored narrative body. This is the indexed, searchable text.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].episode","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"How the episode was produced — \"Conversation\" or \"AgentConversation\".","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].type","typeLabel":"string"},"score":{"type":"number","title":"Score","description":"Relevance of this episode to the query. What the number means depends on `method`: the hybrid path fuses its two routes into a probability in 0.0–1.0 (which is what `min_score` filters on), while keyword and vector pass the underlying engine's own score through — BM25 has no upper bound and vector similarity depends on the metric. So compare scores within one method, not across methods. On /api/v2/memory/context the score is a rank-fusion score instead (roughly 0.01 to 0.05, plus 1.0 for a `cited` episode, so cited episodes come first); it is not comparable with /api/v2/memory/search scores.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].score","typeLabel":"number"},"user_id":{"oneOf":[{"type":"string","title":"User Id","description":"The user this episode belongs to. Null on an episode merged from several owners.","uniqueKey":"data.episodes.items.[INDEX].user_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"User Id","description":"The user this episode belongs to. Null on an episode merged from several owners.","uniqueKey":"data.episodes.items.[INDEX].user_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.episodes.items.[INDEX].user_id","typeLabel":"string | null"},"session_id":{"oneOf":[{"type":"string","title":"Session Id","description":"The session it was extracted from. Null when the episode merges more than one session.","uniqueKey":"data.episodes.items.[INDEX].session_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Session Id","description":"The session it was extracted from. Null when the episode merges more than one session.","uniqueKey":"data.episodes.items.[INDEX].session_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.episodes.items.[INDEX].session_id","typeLabel":"string | null"},"sender_ids":{"items":{"type":"string","uniqueKey":"data.episodes.items.[INDEX].sender_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Sender Ids","description":"The senders that appear in the source exchange.","uniqueKey":"data.episodes.items.[INDEX].sender_ids","typeLabel":"string[]"},"atomic_facts":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Atomic-fact id.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].atomic_facts.items.[INDEX].id","typeLabel":"string"},"content":{"type":"string","title":"Content","description":"The fact itself, as a single statement.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].atomic_facts.items.[INDEX].content","typeLabel":"string"},"score":{"type":"number","title":"Score","description":"Relevance of this fact to the query.","isRequired":true,"uniqueKey":"data.episodes.items.[INDEX].atomic_facts.items.[INDEX].score","typeLabel":"number"}},"type":"object","required":["id","content","score"],"title":"SearchAtomicFactItem","uniqueKey":"data.episodes.items.[INDEX].atomic_facts.items.[INDEX]","typeLabel":"SearchAtomicFactItem · object"},"type":"array","title":"Atomic Facts","description":"The facts extracted from this episode, each with its own relevance score.","uniqueKey":"data.episodes.items.[INDEX].atomic_facts","typeLabel":"SearchAtomicFactItem · object[]"},"tags":{"items":{"type":"string","uniqueKey":"data.episodes.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Tags","description":"Tags attached through /api/v2/memory/tag/*.","uniqueKey":"data.episodes.items.[INDEX].tags","typeLabel":"string[]"},"edited_at":{"oneOf":[{"type":"string","title":"Edited At","description":"When the memory was last edited by hand through /api/v2/memory/update. Absent on a memory that was never edited.","format":"date-time","uniqueKey":"data.episodes.items.[INDEX].edited_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Edited At","description":"When the memory was last edited by hand through /api/v2/memory/update. Absent on a memory that was never edited.","uniqueKey":"data.episodes.items.[INDEX].edited_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.episodes.items.[INDEX].edited_at","typeLabel":"string\u003cdate-time> | null"},"reflect_state":{"oneOf":[{"type":"string","title":"Reflect State","description":"Set once the narrative has been edited by hand: \"pending\" until background consolidation has absorbed the new text (a search may briefly return both it and a merged narrative close to it), \"done\" afterwards. Absent on a memory whose narrative was never edited.","enum":["pending","done"],"uniqueKey":"data.episodes.items.[INDEX].reflect_state.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Reflect State","description":"Set once the narrative has been edited by hand: \"pending\" until background consolidation has absorbed the new text (a search may briefly return both it and a merged narrative close to it), \"done\" afterwards. Absent on a memory whose narrative was never edited.","uniqueKey":"data.episodes.items.[INDEX].reflect_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.episodes.items.[INDEX].reflect_state","typeLabel":"enum\u003cstring> | null"},"cited":{"type":"boolean","title":"Cited","default":false,"description":"/api/v2/memory/context only: the retrieval model named this episode as one its answer rested on. Always false on /api/v2/memory/search.","uniqueKey":"data.episodes.items.[INDEX].cited","typeLabel":"boolean"}},"type":"object","required":["id","app_id","project_id","timestamp","summary","subject","episode","type","score"],"title":"SearchEpisodeItem","uniqueKey":"data.episodes.items.[INDEX]","typeLabel":"SearchEpisodeItem · object"},"type":"array","title":"Episodes","description":"Matching episodes, for a user owner. Always present, empty when not applicable.","uniqueKey":"data.episodes","typeLabel":"SearchEpisodeItem · object[]"},"profiles":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Profile id.","isRequired":true,"uniqueKey":"data.profiles.items.[INDEX].id","typeLabel":"string"},"app_id":{"type":"string","title":"App Id","description":"The business-semantic scope this profile was written under.","isRequired":true,"uniqueKey":"data.profiles.items.[INDEX].app_id","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Second half of that scope.","isRequired":true,"uniqueKey":"data.profiles.items.[INDEX].project_id","typeLabel":"string"},"user_id":{"type":"string","title":"User Id","description":"The user this profile describes.","isRequired":true,"uniqueKey":"data.profiles.items.[INDEX].user_id","typeLabel":"string"},"profile_data":{"additionalProperties":true,"type":"object","title":"Profile Data","description":"The profile itself — the explicit_info and implicit_traits items maintained by extraction and by /api/v2/memory/edit. Each item's id is what an edit operation targets.","uniqueKey":"data.profiles.items.[INDEX].profile_data","typeLabel":"Profile Data · object"},"created_at":{"oneOf":[{"type":"string","title":"Created At","description":"When the profile was first created.","format":"date-time","uniqueKey":"data.profiles.items.[INDEX].created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Created At","description":"When the profile was first created.","uniqueKey":"data.profiles.items.[INDEX].created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.profiles.items.[INDEX].created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"type":"string","title":"Updated At","description":"When it last changed.","format":"date-time","uniqueKey":"data.profiles.items.[INDEX].updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Updated At","description":"When it last changed.","uniqueKey":"data.profiles.items.[INDEX].updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.profiles.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time> | null"},"score":{"oneOf":[{"type":"number","title":"Score","description":"Relevance to the query. Null when the profile was returned by `include_profile` rather than matched.","uniqueKey":"data.profiles.items.[INDEX].score.oneOf.0","typeLabel":"number"},{"type":"null","title":"Score","description":"Relevance to the query. Null when the profile was returned by `include_profile` rather than matched.","uniqueKey":"data.profiles.items.[INDEX].score.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.profiles.items.[INDEX].score","typeLabel":"number | null"}},"type":"object","required":["id","app_id","project_id","user_id"],"title":"SearchProfileItem","uniqueKey":"data.profiles.items.[INDEX]","typeLabel":"SearchProfileItem · object"},"type":"array","title":"Profiles","description":"The user's profile, when `include_profile` asked for it.","uniqueKey":"data.profiles","typeLabel":"SearchProfileItem · object[]"},"agent_cases":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Agent-case id.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].id","typeLabel":"string"},"app_id":{"type":"string","title":"App Id","description":"The business-semantic scope this case was written under.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].app_id","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Second half of that scope.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].project_id","typeLabel":"string"},"agent_id":{"type":"string","title":"Agent Id","description":"The agent that owns this case.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].agent_id","typeLabel":"string"},"session_id":{"type":"string","title":"Session Id","description":"The session whose trajectory the case was distilled from.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].session_id","typeLabel":"string"},"task_intent":{"type":"string","title":"Task Intent","description":"What the agent was trying to do in that trajectory.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].task_intent","typeLabel":"string"},"approach":{"type":"string","title":"Approach","description":"How it went about it — the reusable part of the case.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].approach","typeLabel":"string"},"quality_score":{"type":"number","title":"Quality Score","description":"How good this case is judged to be. Nominally 0.0–1.0 with 0.5 as the no-opinion default, but the value is the extractor's own and nothing on the write path enforces the range — treat an out-of-range number as possible. One threshold is real: a case scoring below 0.2 is never distilled into a skill.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].quality_score","typeLabel":"number"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the trajectory happened (ISO 8601).","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].timestamp","typeLabel":"string\u003cdate-time>"},"score":{"type":"number","title":"Score","description":"Relevance of this case to the query.","isRequired":true,"uniqueKey":"data.agent_cases.items.[INDEX].score","typeLabel":"number"},"key_insight":{"oneOf":[{"type":"string","title":"Key Insight","description":"The single takeaway distilled from the trajectory, when there is one.","uniqueKey":"data.agent_cases.items.[INDEX].key_insight.oneOf.0","typeLabel":"string"},{"type":"null","title":"Key Insight","description":"The single takeaway distilled from the trajectory, when there is one.","uniqueKey":"data.agent_cases.items.[INDEX].key_insight.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_cases.items.[INDEX].key_insight","typeLabel":"string | null"}},"type":"object","required":["id","app_id","project_id","agent_id","session_id","task_intent","approach","quality_score","timestamp","score"],"title":"SearchAgentCaseItem","uniqueKey":"data.agent_cases.items.[INDEX]","typeLabel":"SearchAgentCaseItem · object"},"type":"array","title":"Agent Cases","description":"Matching agent cases, for an agent owner.","uniqueKey":"data.agent_cases","typeLabel":"SearchAgentCaseItem · object[]"},"agent_skills":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Agent-skill id.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].id","typeLabel":"string"},"app_id":{"type":"string","title":"App Id","description":"The business-semantic scope this skill was written under.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].app_id","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Second half of that scope.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].project_id","typeLabel":"string"},"agent_id":{"type":"string","title":"Agent Id","description":"The agent that owns this skill.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].agent_id","typeLabel":"string"},"name":{"type":"string","title":"Name","description":"The skill's name.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","title":"Description","description":"What the skill is for, in a sentence.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].description","typeLabel":"string"},"content":{"type":"string","title":"Content","description":"The skill itself — the reusable procedure, ready to put in a prompt.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].content","typeLabel":"string"},"confidence":{"type":"number","title":"Confidence","description":"How much the distillation trusts this skill. Nominally 0.0–1.0, defaulting to 0.0 before anything scores it; the range is not enforced on the write path. Nothing in retrieval filters on it today, and how it divides labour with `maturity_score` is still open — so do not build a threshold on it yet.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].confidence","typeLabel":"number"},"maturity_score":{"type":"number","title":"Maturity Score","description":"How well-established the skill is. Nominally 0.0–1.0 and unenforced, and — unlike the other two scores — its default is 0.6 rather than 0.0, chosen so an unscored skill starts mid-optimistic. The cost is that an unscored 0.6 is indistinguishable from a scored 0.6: there is no \"not evaluated\" sentinel, and maturity scoring is skipped by default. Filtering near 0.6 is therefore unreliable.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].maturity_score","typeLabel":"number"},"score":{"type":"number","title":"Score","description":"Relevance of this skill to the query.","isRequired":true,"uniqueKey":"data.agent_skills.items.[INDEX].score","typeLabel":"number"},"source_case_ids":{"items":{"type":"string","uniqueKey":"data.agent_skills.items.[INDEX].source_case_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Source Case Ids","description":"The agent cases this skill was distilled from. Fetch them for the underlying evidence.","uniqueKey":"data.agent_skills.items.[INDEX].source_case_ids","typeLabel":"string[]"},"created_at":{"oneOf":[{"type":"string","title":"Created At","description":"When the skill was first distilled.","format":"date-time","uniqueKey":"data.agent_skills.items.[INDEX].created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Created At","description":"When the skill was first distilled.","uniqueKey":"data.agent_skills.items.[INDEX].created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_skills.items.[INDEX].created_at","typeLabel":"string\u003cdate-time> | null"},"updated_at":{"oneOf":[{"type":"string","title":"Updated At","description":"When it was last reinforced or rewritten.","format":"date-time","uniqueKey":"data.agent_skills.items.[INDEX].updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Updated At","description":"When it was last reinforced or rewritten.","uniqueKey":"data.agent_skills.items.[INDEX].updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_skills.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time> | null"}},"type":"object","required":["id","app_id","project_id","agent_id","name","description","content","confidence","maturity_score","score"],"title":"SearchAgentSkillItem","uniqueKey":"data.agent_skills.items.[INDEX]","typeLabel":"SearchAgentSkillItem · object"},"type":"array","title":"Agent Skills","description":"Matching agent skills, for an agent owner.","uniqueKey":"data.agent_skills","typeLabel":"SearchAgentSkillItem · object[]"},"unprocessed_messages":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Buffered-message id.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].id","typeLabel":"string"},"app_id":{"type":"string","title":"App Id","description":"The business-semantic scope the message was written under.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].app_id","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Second half of that scope.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].project_id","typeLabel":"string"},"session_id":{"type":"string","title":"Session Id","description":"The session the message is buffered under.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].session_id","typeLabel":"string"},"sender_id":{"type":"string","title":"Sender Id","description":"Who sent it.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].sender_id","typeLabel":"string"},"role":{"type":"string","enum":["user","assistant","tool"],"title":"Role","description":"\"user\", \"assistant\" or \"tool\", as submitted.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"content":{"oneOf":[{"type":"string","title":"Content","description":"The message body as submitted.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"properties":{"type":{"type":"string","enum":["text","audio","image","doc","pdf","html","email"],"title":"Type","description":"What this item is: \"text\", \"image\", \"audio\", \"doc\", \"pdf\", \"html\" or \"email\". It selects how the content is parsed, so it must match the payload.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","title":"Text","description":"Inline text, used when `type` is \"text\".","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","description":"Inline text, used when `type` is \"text\".","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].text","typeLabel":"string | null"},"source":{"oneOf":[{"type":"string","title":"Source","description":"Where the item came from — an origin label carried through to the memory.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","description":"Where the item came from — an origin label carried through to the memory.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source","typeLabel":"string | null"},"base64":{"oneOf":[{"type":"string","title":"Base64","description":"The item's bytes inline, base64-encoded. NOTE: a non-text item that carries only `base64` is skipped by the parse step — the parser reads bytes from object storage — so use `uri` for anything that must actually be understood.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base64","description":"The item's bytes inline, base64-encoded. NOTE: a non-text item that carries only `base64` is skipped by the parse step — the parser reads bytes from object storage — so use `uri` for anything that must actually be understood.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64","typeLabel":"string | null"},"uri":{"oneOf":[{"type":"string","title":"Uri","description":"Pointer to already-uploaded bytes: the object key returned by POST /api/v2/object/sign. This is the only form of a non-text item that gets parsed.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri.oneOf.0","typeLabel":"string"},{"type":"null","title":"Uri","description":"Pointer to already-uploaded bytes: the object key returned by POST /api/v2/object/sign. This is the only form of a non-text item that gets parsed.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri","typeLabel":"string | null"},"ext":{"oneOf":[{"type":"string","title":"Ext","description":"File extension of the referenced content, e.g. \"pdf\" — used when the uri carries none.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ext","description":"File extension of the referenced content, e.g. \"pdf\" — used when the uri carries none.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","title":"Name","description":"Original file name, kept for display and passed to the parser.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Original file name, kept for display and passed to the parser.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].name","typeLabel":"string | null"},"source_info":{"oneOf":[{"type":"object","title":"Source Info","description":"Free-form provenance metadata stored alongside the item; a `size` here is passed to the parser.","additionalProperties":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info.oneOf.0","typeLabel":"Source Info · object"},{"type":"null","title":"Source Info","description":"Free-form provenance metadata stored alongside the item; a `size` here is passed to the parser.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info","typeLabel":"Source Info · object | null"},"extras":{"oneOf":[{"type":"object","title":"Extras","description":"Free-form extra fields, passed through untouched.","additionalProperties":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras.oneOf.0","typeLabel":"Extras · object"},{"type":"null","title":"Extras","description":"Free-form extra fields, passed through untouched.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras","typeLabel":"Extras · object | null"}},"type":"object","required":["type"],"title":"ContentItem","description":"A single content element (appendix A). Current phase: only ``type=\"text\"``.","uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1.items.[INDEX]","typeLabel":"ContentItem · object"},"title":"Content","description":"The message body as submitted.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content.oneOf.1","typeLabel":"ContentItem · object[]"}],"isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].content","typeLabel":"string | ContentItem · object[]"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"When the message was produced (ISO 8601).","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].timestamp","typeLabel":"string\u003cdate-time>"},"sender_name":{"oneOf":[{"type":"string","title":"Sender Name","description":"The sender's display name, when one was given.","uniqueKey":"data.unprocessed_messages.items.[INDEX].sender_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sender Name","description":"The sender's display name, when one was given.","uniqueKey":"data.unprocessed_messages.items.[INDEX].sender_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].sender_name","typeLabel":"string | null"},"tool_calls":{"oneOf":[{"type":"array","items":{"properties":{"id":{"type":"string","title":"Id","description":"Tool-call id; the matching \"tool\" message echoes it as `tool_call_id`.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].id","typeLabel":"string"},"function":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the function the assistant called.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function.name","typeLabel":"string"},"arguments":{"type":"string","title":"Arguments","description":"The call's arguments as a JSON-encoded string (OpenAI shape), not an object.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function.arguments","typeLabel":"string"}},"type":"object","required":["name","arguments"],"title":"ToolCallFunction","description":"The function invoked, with its arguments.","isRequired":true,"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function","typeLabel":"ToolCallFunction · object"},"type":{"type":"string","title":"Type","default":"function","description":"Tool-call kind. Always \"function\" today.","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["id","function"],"title":"ToolCall","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX]","typeLabel":"ToolCall · object"},"title":"Tool Calls","description":"Tool calls on an assistant message, as submitted.","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.0","typeLabel":"ToolCall · object[]"},{"type":"null","title":"Tool Calls","description":"Tool calls on an assistant message, as submitted.","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_calls","typeLabel":"ToolCall · object[] | null"},"tool_call_id":{"oneOf":[{"type":"string","title":"Tool Call Id","description":"The tool call this result answers, on a \"tool\" message.","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_call_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Tool Call Id","description":"The tool call this result answers, on a \"tool\" message.","uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_call_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.unprocessed_messages.items.[INDEX].tool_call_id","typeLabel":"string | null"}},"type":"object","required":["id","app_id","project_id","session_id","sender_id","role","content","timestamp"],"title":"UnprocessedMessageDTO","description":"Buffered raw message not yet extracted (no owner — inference happens after\nboundary detection). Returned by /search only when ``filters.session_id`` is a\ntop-level eq scalar (spec §4 / appendix E).","uniqueKey":"data.unprocessed_messages.items.[INDEX]","typeLabel":"UnprocessedMessageDTO · object"},"type":"array","title":"Unprocessed Messages","description":"Raw buffered messages not yet extracted. Returned only when the request filtered on a single `session_id`, so a caller can see what is still in flight.","uniqueKey":"data.unprocessed_messages","typeLabel":"UnprocessedMessageDTO · object[]"}},"type":"object","title":"SearchData","description":"Endpoint-defined business result","isRequired":true,"uniqueKey":"data","typeLabel":"SearchData · object"}},"type":"object","required":["request_id","data"],"title":"SuccessEnvelope[SearchData]","uniqueKey":"","typeLabel":"SuccessEnvelope[SearchData] · object"},"examples":{"Example":{"title":"Example","value":{"request_id":"\u003cstring>","data":{"episodes":[{"id":"\u003cstring>","app_id":"\u003cstring>","project_id":"\u003cstring>","timestamp":"2023-11-07T05:31:56Z","summary":"\u003cstring>","subject":"\u003cstring>","episode":"\u003cstring>","type":"\u003cstring>","score":123,"user_id":"\u003cstring>","session_id":"\u003cstring>","sender_ids":["\u003cstring>"],"atomic_facts":[{"id":"\u003cstring>","content":"\u003cstring>","score":123}],"tags":["\u003cstring>"],"edited_at":"2023-11-07T05:31:56Z","reflect_state":"pending","cited":false}],"profiles":[{"id":"\u003cstring>","app_id":"\u003cstring>","project_id":"\u003cstring>","user_id":"\u003cstring>","profile_data":{},"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","score":123}],"agent_cases":[{"id":"\u003cstring>","app_id":"\u003cstring>","project_id":"\u003cstring>","agent_id":"\u003cstring>","session_id":"\u003cstring>","task_intent":"\u003cstring>","approach":"\u003cstring>","quality_score":123,"timestamp":"2023-11-07T05:31:56Z","score":123,"key_insight":"\u003cstring>"}],"agent_skills":[{"id":"\u003cstring>","app_id":"\u003cstring>","project_id":"\u003cstring>","agent_id":"\u003cstring>","name":"\u003cstring>","description":"\u003cstring>","content":"\u003cstring>","confidence":123,"maturity_score":123,"score":123,"source_case_ids":["\u003cstring>"],"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"}],"unprocessed_messages":[{"id":"\u003cstring>","app_id":"\u003cstring>","project_id":"\u003cstring>","session_id":"\u003cstring>","sender_id":"\u003cstring>","role":"user","content":"\u003cstring>","timestamp":"2023-11-07T05:31:56Z","sender_name":"\u003cstring>","tool_calls":[{"id":"\u003cstring>","function":{"name":"\u003cstring>","arguments":"\u003cstring>"},"type":"function"}],"tool_call_id":"\u003cstring>"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"ea898aa4-3129-4950-bd3e-719bcabf0fa4":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"d3fd4424-215b-4b73-bb17-b3bdb58d442b":{"description":"Authenticated but not permitted — either rejected by the auth service, or the account's memory API version does not match the interface version implied by the path (a v1 account calling an /api/v2 route).","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"a6c396bb-9b4c-4553-848d-500d2b67cd47":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","description":"Path to the offending field, from the body root.","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","description":"What is wrong with it.","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","description":"Machine-readable validation-error kind.","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","description":"One entry per field that failed validation.","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"fd959beb-f279-48d9-a11f-65d96e5ed7b0":{"description":"Rate limit or quota exceeded.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"86d73fa2-0c74-47c4-b7f1-95408ee4e011":{"description":"The gateway could not reach the authentication service. Transient — retry with backoff.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"903c48f7-e2df-45e0-bf1e-f020d6c26b61":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"6755bf3f-8ce6-4610-8f69-e9440a578770":{"url":"https://api.evermind.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"evermind","siteName":"EverOS","title":"Search memories [OSS + Cloud] - EverOS","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T03:27:45.735Z","originalFileLocation":"api-reference/memory/search-memories-[oss-+-cloud].mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Retrieve the memories relevant to a query. Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply. The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EverOS\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Search memories [OSS + Cloud] - EverOS\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retrieve the memories relevant to a query. Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply. The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EverOS\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://evermind.mintlify.app/_mintlify/api/og/v2?division=Memory\u0026amp;title=Search+memories+%5BOSS+%2B+Cloud%5D\u0026amp;description=Retrieve+the+memories+relevant+to+a+query.%0A%0AExactly+one+of+%60user_id%60+%2F+%60agent_id%60+is+required%2C+and+it+decides+what+comes+back%3A+a+user+owner+returns+episodes+%28pl\u0026amp;theme=542fb84329606931cb1a7e2a\u0026amp;signature=d31a3c38b3bf4cc6ec168260bcd088b4bfa5354347569ebabba2da7714ccc9d7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Search memories [OSS + Cloud] - EverOS\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retrieve the memories relevant to a query. Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply. The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://evermind.mintlify.app/_mintlify/api/og/v2?division=Memory\u0026amp;title=Search+memories+%5BOSS+%2B+Cloud%5D\u0026amp;description=Retrieve+the+memories+relevant+to+a+query.%0A%0AExactly+one+of+%60user_id%60+%2F+%60agent_id%60+is+required%2C+and+it+decides+what+comes+back%3A+a+user+owner+returns+episodes+%28pl\u0026amp;theme=542fb84329606931cb1a7e2a\u0026amp;signature=d31a3c38b3bf4cc6ec168260bcd088b4bfa5354347569ebabba2da7714ccc9d7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EverOS\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2DABC2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/memory/search-memories-%5Boss-%2B-cloud%5D.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.evermind.ai/#organization\",\"name\":\"EverOS\",\"url\":\"https://docs.evermind.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/dark.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=3c77717d85a2e6597b61a703fa9f18dc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.evermind.ai#website\",\"name\":\"EverOS\",\"url\":\"https://docs.evermind.ai\",\"publisher\":{\"@id\":\"https://docs.evermind.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]#webpage\",\"url\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]\",\"name\":\"Search memories [OSS + Cloud]\",\"description\":\"Retrieve the memories relevant to a query. Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply. The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\",\"dateModified\":\"2026-10-26T03:27:45.735Z\",\"isPartOf\":{\"@id\":\"https://docs.evermind.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Memory\",\"item\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Search memories [OSS + Cloud]\",\"item\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]#apireference\",\"headline\":\"Search memories [OSS + Cloud]\",\"name\":\"Search memories [OSS + Cloud]\",\"description\":\"Retrieve the memories relevant to a query. Exactly one of user_id / agent_id is required, and it decides what comes back: a user owner returns episodes (plus profiles with include_profile), an agent owner returns agent cases and skills. All result collections are always present in the response, empty when they do not apply. The vector-backed methods read an index that lags extraction by seconds — to read back something just extracted, use /api/v2/memory/get.\",\"url\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]\",\"mainEntityOfPage\":{\"@id\":\"https://docs.evermind.ai/api-reference/memory/search-memories-[oss-+-cloud]#webpage\"},\"dateModified\":\"2026-10-26T03:27:45.735Z\",\"publisher\":{\"@id\":\"https://docs.evermind.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.evermind.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EverOS\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EverOS","nav":{"global":{},"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":"/introduction"}]},{"tab":"EverOS Cloud","pages":[{"title":"EverOS Cloud","href":"/cloud/overview"}]},{"tab":"Open Source","pages":[{"title":"Open Source","href":"/open-source/overview"}]},{"tab":"Cookbook","pages":[{"title":"Cookbook","href":"/cookbook/quickstart"}]},{"tab":"API Reference","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"API Overview","icon":"circle-info","href":"/api-reference/introduction"}]},{"group":"Migration","icon":"arrow-up-right-dots","pages":[{"title":"v1 API Retirement","icon":"calendar-xmark","href":"/api-reference/v1-sunset"},{"title":"Upgrade Python SDK to 1.x","icon":"arrow-up-right-dots","href":"/api-reference/sdk-migration-1x"}]},{"group":"Memory","icon":"database","pages":[{"title":"Add messages [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/add","href":"/api-reference/memory/add-messages-[oss-+-cloud]"},{"title":"Force memory extraction [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/flush","href":"/api-reference/memory/force-memory-extraction-[oss-+-cloud]"},{"title":"Get memories [OSS + Cloud]","description":"List stored memories of one type, paginated.\n\n- Exactly one of `user_id` / `agent_id` is required.\n- `memory_type` must match that owner: a user owns \"episode\" and \"profile\", an agent owns \"agent_case\" and \"agent_skill\". The other pairings are rejected with 422.\n\nThis is a structured read, not a query: it does not embed the request, so a memory is readable as soon as it is extracted — whereas the vector index /api/v2/memory/search relies on lags behind extraction by seconds.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/get","href":"/api-reference/memory/get-memories-[oss-+-cloud]"},{"title":"Search memories [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/search","href":"/api-reference/memory/search-memories-[oss-+-cloud]"},{"title":"Context Retrieval [Cloud-only]","description":"Retrieve memories with a multi-round, LLM-driven search loop.\n\nAn LLM plans and runs several searches over the owner's memories (keyword, semantic, hybrid, topic cluster, and reading the surrounding conversation or a whole session), looks at what came back, and searches again with new queries until it judges the evidence sufficient to answer `query`. The episodes it found are returned. **The response contains memories, not an answer**: the model's own answer is discarded.\n\nUse it for questions a single search answers poorly: multi-hop, temporal, or spread across several conversations. For simple lookups, /api/v2/memory/search is faster and cheaper.\n\n**Request**: the same body as /api/v2/memory/search, except that `method` is fixed to \"context\" (any other value is a 422) and `min_score` is not supported (422).\n\n**Response**: the same `SearchData` shape as /api/v2/memory/search.\n- Episodes come back for a `user_id` owner only. For an `agent_id` owner, `episodes`, `agent_cases` and `agent_skills` are empty.\n- `profiles` (with `include_profile`) and `unprocessed_messages` (with a top-level `session_id` filter) are filled exactly as on search.\n- `episodes[].cited` is true for the episodes the model named as the ones its answer rested on.\n- `episodes[].score` is a rank-fusion score, roughly 0.01 to 0.05, plus 1.0 for a cited episode. It is not comparable with search scores.\n\n**Limits**: by default at most 5 LLM rounds and 45 seconds per request. Reaching a limit is not an error: the episodes found so far are returned. Set your client timeout to at least 60 seconds.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/context","href":"/api-reference/memory/context-retrieval-[cloud-only]"},{"title":"Edit profile items [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/edit","href":"/api-reference/memory/edit-profile-items-[cloud-only]"},{"title":"Edit one memory record [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/update","href":"/api-reference/memory/edit-one-memory-record-[cloud-only]"},{"title":"Delete memories [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/delete","href":"/api-reference/memory/delete-memories-[cloud-only]"},{"title":"Soft-delete memory records by id [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/delete_by_ids","href":"/api-reference/memory/soft-delete-memory-records-by-id-[cloud-only]"},{"title":"Submit feedback about one memory [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/feedback","href":"/api-reference/memory/submit-feedback-about-one-memory-[cloud-only]"},{"group":"Tags","icon":"tags","pages":[{"title":"Bind tags to memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/bind","href":"/api-reference/memory/bind-tags-to-memories-[cloud]"},{"title":"Unbind tags from memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/unbind","href":"/api-reference/memory/unbind-tags-from-memories-[cloud]"},{"title":"Replace tags on memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/replace","href":"/api-reference/memory/replace-tags-on-memories-[cloud]"}]}]},{"group":"Knowledge Bases","icon":"book","pages":[{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases","href":"/api-reference/knowledge/create-a-knowledge-base"},{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases","href":"/api-reference/knowledge/list-knowledge-bases"},{"title":"Get a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/get-a-knowledge-base"},{"title":"Update a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/update-a-knowledge-base"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/delete-a-knowledge-base"},{"title":"Search a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/search","href":"/api-reference/knowledge/search-a-knowledge-base"},{"group":"Documents","icon":"file-lines","pages":[{"title":"Upload a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/documents","href":"/api-reference/knowledge/upload-a-document"},{"title":"List Documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi-oss-v1.json get /api/v1/knowledge/documents","href":"/api-reference/knowledge/list-documents"},{"title":"Get a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/get-a-document"},{"title":"Replace a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/replace-a-document"},{"title":"Update a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/update-a-document"},{"title":"Delete a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/delete-a-document"}]},{"group":"Categories","icon":"folder-tree","pages":[{"title":"Create a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/categories","href":"/api-reference/knowledge/create-a-category"},{"title":"List Categories","deprecated":null,"version":null,"openapi":"/api-reference/openapi-oss-v1.json get /api/v1/knowledge/categories","href":"/api-reference/knowledge/list-categories"},{"title":"Update a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}/categories/{category_id}","href":"/api-reference/knowledge/update-a-category"},{"title":"Delete a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}/categories/{category_id}","href":"/api-reference/knowledge/delete-a-category"}]},{"group":"Topics","icon":"sitemap","pages":[{"title":"List a document's topics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics","href":"/api-reference/knowledge/list-a-documents-topics"},{"title":"Get a topic","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics/{topic_id}","href":"/api-reference/knowledge/get-a-topic"},{"title":"List topics by tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/topics","href":"/api-reference/knowledge/list-topics-by-tag"}]},{"group":"Semantic Tags","icon":"tag","pages":[{"title":"Count tag usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/tags","href":"/api-reference/knowledge/count-tag-usage"},{"title":"Replace a topic's tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics/{topic_id}/tag/replace","href":"/api-reference/knowledge/replace-a-topics-tags"}]}]},{"group":"Async Tasks","icon":"list-check","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Count tasks by status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks/stats","href":"/api-reference/tasks/count-tasks-by-status"},{"title":"Get a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks/{task_id}","href":"/api-reference/tasks/get-a-task"}]},{"group":"Storage","icon":"cloud-arrow-up","pages":[{"title":"Get multimodal upload URLs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/object/sign","href":"/api-reference/storage/get-multimodal-upload-urls"}]}]},{"tab":"API Reference (Cloud v1 · legacy)","pages":[{"title":"API Reference (Cloud v1 · legacy)","href":"/api-reference/legacy-cloud-v1"}]},{"tab":"API Reference (OSS v1 · legacy)","pages":[{"title":"API Reference (OSS v1 · legacy)","href":"/api-reference/legacy-oss-v1"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/changelog/release-notes"}]}]},"title":"Search memories [OSS + Cloud] - EverOS","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-BVNUlwBc.js","dist-aeztFa9U.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-rL8ZCCw4.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","AssistantPageLink-BywkCr5C.js"]}